package com.foreknow.demo5;

import java.util.Scanner;

public class Bank {
    /**
     * 输出菜单
     */
    public static void menu() {
        System.out.println("----------------------------");
        System.out.println("----------欢迎登录-----------");
        System.out.println("----------Bank系统-----------");
        System.out.println("----------版本1.0-----------");
        System.out.println("----------------------------");
    }

    /**
     * 登录的方法
     * @param user 用户名
     * @param pwd 密码
     * @return boolean
     */
    public static boolean login(String user,String pwd){
        Scanner input = new Scanner(System.in);
        for(int i = 3;i > 0;i--) {
            //接收用户的输入
            System.out.println("请输入账号: ");
                String new_user = input.next();
                System.out.println("请输入密码: ");
                String new_pwd = input.next();
                // 判断参数与用户接收到的用户名和密码是否匹配
                if(user.equals(new_user) && pwd.equals(new_pwd)) {
                    //登录成功
                    System.out.println("登 录成功");
                    return true;
                }else {
                if(i - 1 == 0) {
                    System.out.println("密码错误3次，吞卡");
                    //退出系统
                    System.exit(0);
                }
                //提示用户还有几次机会
                System.out.println("用户名或密码错误，请重新输入今日还有"+(i-1)+"次机会");
            }
        }
        return false;
    }

    /**
     * 查询余额
     * @param money
     */
    public static void checkMoney(double money) {
        System.out.println("您的余额为: "+ money);
    }

    /**
     * 存款
     * @param money
     * @return double
     */
    public static double setMoney(double money) {
        int b = 12;
        String s = "abc";
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您要存款的金额: ");
        double addMoney = input.nextInt();
        if(addMoney > 10000) {
            System.out.println("单次存款的金额超过1万元");
            return 0;
        }else if(addMoney < 0) {
            System.out.println("存款金额错误");
            return 0;
        }else if(addMoney % 100 != 0 ) {
            System.out.println("请输入100的整数倍");
            return 0;
        }else {
            System.out.println("存款成功，当前的余额为" + (money + addMoney));
        }
        return addMoney;
    }

    /**
     *
     * @param money
     * @return
     */
    public static double getMoney(double money) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您要取款的金额: ");
        double subMoney = input.nextInt();
        if(subMoney > money) {
            System.out.println("余额不足");
            return 0;
        }else if(subMoney > 3000) {
            System.out.println("单次取款金额超过3000");
            return 0;
        }else if(subMoney < 0) {
            System.out.println("取款金额错误");
            return 0;
        }else if(subMoney % 100 != 0 ) {
            System.out.println("请输入100的整数倍");
            return 0;
        }else {
            System.out.println("取款成功，当前余额为"+(money-subMoney));
            return subMoney;
        }
    }

    /**
     * 修改密码
     * @param pwd
     * @return 如果修改成功要返回新密码,失败就返回旧密码
     */
    public static String changePwd(String pwd) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入旧密码");
        String old_pwd = input.next();
        if(old_pwd.equals(pwd)) {
            System.out.println("请输入新密码: ");
            String new_pwd = input.next();
            System.out.println("请再次输入新密码: ");
            String confirm_pwd = input.next();
            if(new_pwd.equals(confirm_pwd)) {
                System.out.println("密码修改成功");
                return new_pwd;
            }else {
                System.out.println("两次输入密码不一致，请重新输入");
                return pwd;
            }
        }else {
            System.out.println("旧密码输入错误");
        }
        return pwd;
    }

    /**
     * 判断用户是否继续(y/n)
     * 思考：如果用户输入的不是y也不是n 输错错误了。需要提示用户输入错误，请重新输入。
     */
    public static void decide() {
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续操作(y/n)");
        //接收用户的输入
        String choice = input.next();
        if(choice.equals("y")) {
            return;
        }else if(choice.equals("n")) {
            System.out.println("退出系统");
            System.exit(0);
        }else {
            //当输入错误的时候会执行else
            while (true) {
                System.out.println("输入错误，请重新输入，是否继续(y/n)");
                String repeat = input.next();
                if(repeat.equals("y")) {
                    return;
                }else if(repeat.equals("n")){
                    System.out.println("退出成功");
                    System.exit(0);
                }
            }
        }
    }



    public static void main(String[] args) {
        //初始化用户的信息(用户名、密码、余额)
        String user = "admin"; //用户名
        String pwd = "123"; //密码
        double money = 10000; //余额
        Scanner input = new Scanner(System.in);
        //显示菜单 调用menu()方法
        menu();
        //登录 调用login()登录
        boolean isRight = login(user,pwd);
        //登录成功后
        while (isRight){
            //循环操作
            while (true){
                System.out.println("1. 查询余额   2.存款     3.取款     4.修改密码     5.退出");
                System.out.println("请选择菜单: ");
                int choice = input.nextInt();
                switch (choice) {
                    case 1:
                        //查询余额 checkMoney()
                        checkMoney(money);
                        //是否继续(y/n)
                        decide();
                        break;
                    case 2:
                        //存款 setMoney()
                        money += setMoney(money);
                        decide();
                        break;
                    case 3:
                        //取款 getMoney()
                        money -= getMoney(money);
                        decide();
                        break;
                    case 4:
                        //修改密码 changePwd()
                        String str = changePwd(pwd);
                        System.out.println("当前密码为"+str);
                        decide();
                        break;
                    case 5:
                        //退出
                        System.out.println("系统退出");
                        System.exit(0);
                        break;
                    default:
                        System.out.println("非法操作");
                        break;
                }
            }
        }

    }




}
